#include "gui.h"


//vue aeroport
EXPORT void on_show_info_aero_button_clicked(GtkWidget*widget,gpointer rien)
{
	gtk_widget_show_all(dialogue_info_aero);
	msg("on_show_info_aero_button_activate\n");
}

//lance un dialogue d'avertissement s'il y avait déjà une simulation de lancée
//pour demander si on veut enregistrer la simulation (si pas enregistrée)
EXPORT void on_regenerer_clicked(GtkWidget *widget, gpointer rien)
{
	gtk_widget_show_all(regenerer_dialogue);
	simulation_can_run = FALSE;
	//s'il n'y avait pas de simulation enregistree et qu'il y en a une de commence (date UT > 0)
	//OU
	//la version de la simulation enregistree (date UT associee a un fichier) n'est pas la meme que la simulation en cours
		//=> dialogue pour demander si on veut enregistrer ces changements
		msg("Les derniers changements de la simulation n'ont pas ete enregistres, voulez-vous les sauvegarder maintenant ?");
		//=> Si la réponse est oui
			//s'il n'y avait pas de fichier enregistre => Boite Save AS
				//Si abandon Save As => on ne pose pas plus de questions (on n'aura fait aucune action)
			//S'il y avait un fichier enregistre => Save sans boite de dialogue.
	   	//=> Sinon, on passe à l'étape suivante.

	  	//appel de la fonction core_regenerer() (ce n'est pas à nous de la coder dans ce callback)
		//appel de la fonction gui_regenerer() (pareil)

	//Si au contraire, c'était bon niveau enregistrement / partie pas commencée
		//appel de la fonction core_regenerer() (ce n'est pas à nous de la coder dans ce callback)
		//appel de la fonction gui_regenerer() (pareil)

}

EXPORT void on_regenerer_dialogue_close(GtkWidget* widget,gpointer rien)
{
	msg("regenerer_dialogue_close\n");
	gtk_widget_hide_all(regenerer_dialogue);
	if(simulation_started)
	{
		simulation_can_run = TRUE;
	}

}

EXPORT void on_regenerer_cancel_clicked(GtkWidget* widget, gpointer rien)
{
	msg("regenerer_dialogue_canel\n");
	gtk_widget_hide_all(regenerer_dialogue);
	if(simulation_started)
	{
		simulation_can_run = TRUE;
	}

}
EXPORT void on_regenerer_ok_clicked(GtkWidget* widget, gpointer rien)
{
	simulation_can_run = TRUE;
	simulation_current_ut = 0;
	simulation_max_ut = (gdouble)gtk_spin_button_get_value(GTK_SPIN_BUTTON(regenerer_spin_box));
	InitSimulation( variables, (int)simulation_max_ut); //on passe la duree (en UT)en second parametre
	//placement des points aeroports
	msg("PLACER_POINTS\n");
	placer_points();
	//creation des avions
	creer_avions();
	variables->determine_fin = 0; // si doit s'arreter a la fin
	gtk_widget_set_sensitive(toolbar_bas,TRUE);
	msg("regenerer_dialogue_ok\n");
	gtk_widget_hide_all(regenerer_dialogue);
}

EXPORT void on_ouvrir_clicked (GtkWidget* emitter, gpointer on_data)
{}
EXPORT void on_enregistrer_clicked (GtkWidget* emitter, gpointer on_data)
{}
EXPORT void on_enregistrer_sous_clicked (GtkWidget* emitter, gpointer on_data)
{}
EXPORT void on_outil_selection_toggled (GtkToggleToolButton* emitter, gpointer on_data)
{
	gboolean OUI = gtk_toggle_tool_button_get_active(emitter);
	msg("SLection:%d\n",OUI);
	//si le boutone est enfoncé => zoom
		//et désenclencher les boutons correspondants
		if(OUI)
		{
		//enlever les autres modes : mode déplacement
		mode_zoom= !OUI;
		mode_deplacement = !OUI;
		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(bouton_deplacer),!OUI);
		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(bouton_zoom),!OUI);
		mode_selection = TRUE;
		}
		//mettre le mode zoom
		
		//changer de curseur
		msg("z:%d,d:%d,s:%d\n",mode_zoom,mode_deplacement,mode_selection);

}
EXPORT void on_outil_zoomer_toggled (GtkToggleToolButton* emitter, gpointer on_data)
{
	gboolean OUI = gtk_toggle_tool_button_get_active(emitter);
	//si le boutone est enfoncé => zoom
		//et désenclencher les boutons correspondants
		if(OUI)
		{
		//enlever les autres modes : mode déplacement
		mode_deplacement= !OUI;
		mode_selection = !OUI;
		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(bouton_selection),!OUI);
		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(bouton_deplacer),!OUI);
		}
		mode_zoom = OUI;
		//mettre le mode zoom
		
		//changer de curseur
		msg("z:%d,d:%d,s:%d\n",mode_zoom,mode_deplacement,mode_selection);
}
EXPORT void on_outil_decaler_toggled (GtkToggleToolButton* emitter, gpointer on_data)
{
		gboolean OUI = gtk_toggle_tool_button_get_active(emitter);
	//si le boutone est enfoncé => zoom

		//et désenclencher les boutons correspondants
		if(OUI)
		{
		//enlever les autres modes : mode déplacement
		mode_zoom= !OUI;
		mode_selection = !OUI;
		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(bouton_selection),!OUI);
		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(bouton_zoom),!OUI);
		}
		mode_deplacement = OUI;
		//mettre le mode zoom
		
		//changer de curseur
		msg("z:%d,d:%d,s:%d\n",mode_zoom,mode_deplacement,mode_selection);

}
gboolean gui_simulate(gpointer play_toggle)
{
	char texte[50];
	gdouble now,max;
	if(simulation_started && simulation_can_run)
	{
		if(simulation_current_ut >= simulation_max_ut)
		{
			gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(play_toggle),FALSE);
			now = max = simulation_max_ut;
			sprintf(texte,"<b>Date : %d / %d</b>",(int)now,(int)max);
			gtk_label_set_markup(GTK_LABEL(date_label),texte);
			gtk_widget_set_sensitive(toolbar_bas,FALSE);
			return FALSE;
		}
		else
		{
			//mise a jour vue monde
			
			now = simulation_current_ut;
			max = simulation_max_ut;
			gtk_widget_set_sensitive(sim_vitesse_spin,TRUE);
			variables->nbut = 2;//= gtk_spin_button_get_value(GTK_SPIN_BUTTON(sim_vitesse_spin))/10.0; //TODO :RENVOIE 0!!!
			msg("variables->nbut=%d\n",variables->nbut);
			simulation_current_ut += variables->nbut;
			lesavions = DoSimulation( variables );
			msg("gui_simulate: avancement simulation avec DoSimulation\n");
			maj_affichage_avions();
			sprintf(texte,"<b>Date : %d / %d</b>",(int)now,(int)max);
			gtk_label_set_markup(GTK_LABEL(date_label),texte);
			//mise a jour vue aeroport
			gtk_label_set_text(GTK_LABEL(label_avions_vol),"sdsd");
			gtk_label_set_text(GTK_LABEL(label_avions_atterrissage),"gdfg");
			gtk_label_set_text(GTK_LABEL(label_avions_decollage),"qsd");
			gtk_label_set_text(GTK_LABEL(label_avions_parking),"azaze");
		}
	}
	return simulation_started; // simulation_commencée => on continue
}


EXPORT void on_sim_marche_arret_toggled (GtkToggleToolButton* emitter, gpointer on_data)
{
		if(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(emitter)))
		{
			if(simulation_can_run)
			{
				simulation_started = TRUE;
				g_timeout_add(100,gui_simulate,emitter);
			}
		}
		else
		{
			simulation_started = FALSE;
		}
}
EXPORT void on_sim_avancer_clicked (GtkWidget* emitter, gpointer on_data)
{
	if(simulation_can_run && simulation_current_ut < simulation_max_ut)
	{
		variables->nbut = (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(sim_vitesse_spin))/10.0;
		lesavions = DoSimulation( variables );
		maj_affichage_avions();
	}
}
EXPORT void on_sim_avancer_a_clicked (GtkWidget* emitter, gpointer on_data)
{}
EXPORT void on_sim_vitesse_spin_change_value (GtkWidget* emitter, gpointer on_data)
{}
EXPORT void on_man_a_propos_clicked (GtkWidget* emitter, gpointer on_data)
{}
EXPORT void tabs_view_change_current_page_cb (GtkWidget* emitter, gpointer on_data)
{}
